package com.hyh.toyshopping.commons;

import lombok.Getter;

/**
 * @version 1.0
 * @BelongsProject:IntelliJ IDEA
 * @BelongsPackage:com.hyh.myshopping.commons
 * @Author:hyhWTX
 * @ClassName:Result
 * @CreateTime:2022年-12月-06日 19:57
 * @Description: 处理结果类，当服务端向可以端响应时可以将数据封装到该类中回传给客户端
 */
@Getter
//没有get方法就无法转换json对象
public final class Result {
    private Boolean success;//是否成功，true表示成功，false表示失败(默认值)
    private int statusCode;//状态码
    private String message;//消息
    private Object data;//附加数据
    //构造方法私有化
    public Result(Boolean success, int statusCode, String message, Object data) {
        this.success = success;
        this.statusCode = statusCode;
        this.message = message;
        this.data = data;
    }
    /**
     * @Description: 默认成功的方法
     * @return Result

     */


    public static Result success(){
        return new Result(true,200,null,null);
    }
    /***
     * @Description: 带有消息的成功方法
     * @param message
     * @return Result
     */

    public static Result success(String message){
        return  new Result(true,200,message,null);
    }
    /***
     * @Description: 带有消息与附加数据的成功方法
     * @param message
     * @param data
     * @return Result
     */

    public static Result success(String message,Object data){
        return new Result(true,200,message,data);
    }

    /***
     * @Description: 默认的失败方法
     * @param statusCode
     * @return Result
     */

    public static Result fail(int statusCode){
        return new Result(false,statusCode,null,null);
    }


    /***
     * @Description: 带有消息的失败方法
     * @param statusCode
     * @param message
     * @return Result
     */

    public static  Result fail(int statusCode,String message){
        return new Result(false,statusCode,message,null);
    }

    /***
     * @Description: 带有返回消息和附加数据的方法
     * @param statusCode
     * @param message
     * @param data
     * @return Result
     */

    public static Result fail(int statusCode,String message,Object data){
        return  new Result(false,statusCode,message,data);
    }
}
